const deepseek = require('./LLM/deepseek');
const prompts = require('./LLM/prompts');

class Code2Docs {
    /**
     * 生成API文档
     * @param {string} backendCode 后端代码
     * @param {string} format 输出格式(markdown/html)
     * @returns {Promise<string>} 生成的文档
     */
    async generateDocumentation(backendCode, format = 'markdown') {
        const validFormats = ['markdown', 'html'];
        format = format.toLowerCase();

        if (!validFormats.includes(format)) {
            throw new Error(`不支持的格式: ${format}`);
        }

        try {
            const response = await deepseek.call(
                prompts.Code2Docs(backendCode, format),
                { temperature: 0.2 }  // 低随机性确保文档准确
            );
            return response
                .trim()
                .replace(/^```(markdown|html)?/, '')
                .replace(/```$/, '');//this._extractContent(response, format);
        } catch (error) {
            console.error('生成文档失败:', error);
            throw new Error('生成文档失败: ' + error.message);
        }
    }

    
    /* _extractContent(content, format) {
        // 处理没有代码块标记的纯内容
        if (!content.includes('```')) {
            return content;
        }

        // 计算代码块标记
        const backtickCount = Math.max(
            ...content.match(/`+/g).map(m => m.length)
        );
        const codeFence = '`'.repeat(backtickCount);

        // 构建更精确的正则表达式
        const pattern = new RegExp(
            `${codeFence}${format}\\n([\\s\\S]*?)\\n${codeFence}`,
            'i' // 不区分大小写
        );

        const match = content.match(pattern);
        if (match) {
            // 返回匹配内容，保留原格式
            return match[1];
        }

        // 如果未匹配到指定格式的代码块，尝试提取第一个代码块
        const fallbackMatch = content.match(new RegExp(
            `${codeFence}\\n([\\s\\S]*?)\\n${codeFence}`
        ));

        return fallbackMatch ? fallbackMatch[1] : content;
  } */
}

module.exports = new Code2Docs();
